//
// Created by Administrator on 2025/1/22/022.
//

#ifndef LVGL_UI_LVGL_HELPER_H
#define LVGL_UI_LVGL_HELPER_H
#include "lvgl/lvgl.h"

// panel 常用属性
typedef struct {
    lv_coord_t width;
    lv_coord_t height;
    bool is_flex;
    lv_flex_flow_t flex_flow;
    lv_flex_align_t main_place;
    lv_flex_align_t cross_place;
    lv_flex_align_t track_place;
    lv_style_t *style;
}ui_panel_pro_t;

// imager 常用属性
typedef struct {
    lv_coord_t width;
    lv_coord_t height;
    lv_align_t align;
}ui_imager_pro_t;

// label 常用属性
typedef struct {
    lv_coord_t width;
    lv_coord_t height;
    lv_align_t align;
    lv_color_t color_value;
}ui_label_pro_t;


// group 焦点组
lv_group_t * ui_create_group_set_default();
lv_group_t * ui_set_indev_group(lv_indev_t * indev);

// screen
lv_obj_t * ui_create_screen(lv_obj_t *parent,lv_coord_t width,lv_coord_t height);
lv_obj_t * ui_create_default_screen(lv_obj_t *parent);

// panel
lv_obj_t * ui_create_panel(lv_obj_t *parent,ui_panel_pro_t *pro);
lv_obj_t * ui_create_column_panel(lv_obj_t *parent,lv_coord_t width,lv_coord_t height);
lv_obj_t * ui_create_column_default_panel(lv_obj_t *parent);
lv_obj_t * ui_create_row_panel(lv_obj_t *parent,lv_coord_t width,lv_coord_t height);
lv_obj_t * ui_create_row_default_panel(lv_obj_t *parent);
lv_obj_t * ui_create_without_flex_panel(lv_obj_t *parent,lv_coord_t width,lv_coord_t height);
lv_obj_t * ui_create_default_without_flex_panel(lv_obj_t *parent);

// image
lv_obj_t * ui_create_image_by_src(lv_obj_t *parent,ui_imager_pro_t *pro,const void * src);
lv_obj_t * ui_create_default_image_by_src(lv_obj_t *parent,const void * src);
lv_obj_t * ui_create_default_image(lv_obj_t *parent);

// label
lv_obj_t * ui_create_label(lv_obj_t *parent,ui_label_pro_t *pro,const char * text,lv_font_t * font);
lv_obj_t * ui_create_default_label(lv_obj_t *parent,const char * text,lv_font_t * font);

// style
lv_style_t * ui_get_default_style();
int ui_create_default_style(lv_style_t *style);
#endif //LVGL_UI_LVGL_HELPER_H
